package com.example.fish.service.impl;

import com.example.fish.mapper.RaceMapper;
import com.example.fish.pojo.Race;
import com.example.fish.pojo.RaceExample;
import com.example.fish.service.ex.RacesIsNullException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class CompetitionService {

    @Autowired
    private RaceMapper raceMapper;

    private long lastTime ;

//    定时任务的执行周期
    private static final long circle = 50000000;

//    定时任务

    /***
     * 修改canrace
     * 0 --->最新报名的，下次参与的
     * 1---->正在评选的，下次展示的
     * 2---->正在展示的，下次可删除的
     */
    @Scheduled(fixedRate =  circle)
    public void evaluateBest(){
//        直接全部+1 ，然后删除大于等于3的
        RaceExample example = new RaceExample();
        example.createCriteria();
        List<Race> races = raceMapper.selectByExample(example);
//        System.out.println("定时任务查询到的races"+races.size());
        System.out.println("定时任务执行一次");
        if (races.size() == 0){
            throw new RacesIsNullException("没有参与比赛的item了");
        }
//        修改canrace
        for (Race race : races) {
            race.setCanrace(race.getCanrace()+1);
//            更新
            raceMapper.updateByPrimaryKey(race);
        }
//        删除大于等于3的
        // 获取当前时间
        lastTime=System.currentTimeMillis();
    }
/***
 * 获取剩余时间的思路，用定时的时间  -  （当前时间 - 上次时间）
 */
    public long getTime(){
        // 获取当前时间
        long currentTime = System.currentTimeMillis();
        // 计算距离上次执行时间的差值
        long elapsedTime = currentTime - lastTime;
//        剩余时间
        long l = circle - elapsedTime;
//        System.out.println("剩余的时间(毫秒ms)"+l);
        return l;
    }
}
